
 

********************************************************************************
* Table 3: State Dependence of Yield Changes around FOMC Meetings
******************************************************************************** 
 
use "../data/final_data_fed_secular_decline.dta", clear
 
*Compute 3-day FOMC window change for each meeting
replace sveny10_chg = 0 if missing(sveny10_chg)
generate FOMC_sveny10_chg  = sveny10_chg[_n-1] + sveny10_chg + sveny10_chg[_n+1] if fomc_meet==1 
	//Convert to basis points
	replace FOMC_sveny10_chg = FOMC_sveny10_chg * 100
 
* Compute 13-week changes in some variables
generate logchg_sp500 = log(spx) - log(L91.spx)
generate logchg_bcom = log(bcom) - log(L91.bcom) - 0.4 * (log(bcomag) - log(L91.bcomag))
generate chg_slope = slope - L91.slope

*Construct principal components of yields
pca sveny01 sveny02 sveny05 sveny10 sveny30 if date >= mdy(6,1,1989) & date < mdy(7,1,2021) 
predict pc1 pc2, score

* Use variables from prior to the window
local varlist "logchg_sp500 logchg_bcom chg_slope vix move pc1 pc2 nfp_std usrecd spx_logret1m"
foreach x of local varlist{
	*Replace missing values
	replace `x' = `x'[_n-1] if missing(`x')
	
	*Obtain value from 2 days before the meeting
	generate L2_`x' = `x'[_n-2]
	drop `x'
}
 
*Generate indicator for negative equity returns
generate L2_eq_neg = (L2_spx_logret1m<0) 

keep if date >= mdy(6,1,1989)
drop if date >= mdy(7,1,2021) 

*Unit of observation: FOMC meeting
keep if fomc_meet == 1 

*Standardize
local varlist "pc1 pc2"
foreach x of local varlist{
	egen L2_`x'_std = std(L2_`x')
}

*Dummy: high = above median
local varlist "vix move"
foreach x of local varlist{
	summarize L2_`x', detail
	generate  L2_`x'_high = (L2_`x' > `r(p50)')
}


*Label the x-variables
label var L2_pc1				"Level - Yield Curve (PC1)"
label var L2_pc2				"Slope - Yield Curve (PC2)"
label var L2_eq_neg 			"Dummy(Negative 1-month S\&P500 return)"
label var L2_logchg_sp500		"$\Delta$ log S\&P500"
label var L2_logchg_bcom		"$\Delta$ log Yield Curve Slope (10y--3m)"
label var L2_chg_slope			"$\Delta$ log Bloomberg Commodity Index"
label var lagged_cfnai			"Chicago Fed National Activity Index"
label var lagged_bbkmleix		"Brave-Butters-Kelley Leading Index"
label var L2_nfp_std			"Nonfarm Payroll Surprise"
label var L2_usrecd				"Dummy(NBER Recession)"
label var L2_move_high			"Dummy(High MOVE)" 
label var L2_vix_high 			"Dummy(High VIX)"

*Run regression
eststo clear
eststo: regress FOMC_sveny10_chg, vce(hc2)
eststo: regress FOMC_sveny10_chg L2_pc1 L2_pc2, vce(hc2)
eststo: regress FOMC_sveny10_chg L2_eq_neg, vce(hc2)
eststo: regress FOMC_sveny10_chg L2_logchg_sp500 L2_chg_slope L2_logchg_bcom , vce(hc2)
eststo: regress FOMC_sveny10_chg lagged_cfnai lagged_bbkmleix L2_nfp_std, vce(hc2)
eststo: regress FOMC_sveny10_chg L2_usrecd, vce(hc2)
eststo: regress FOMC_sveny10_chg L2_vix_high, vce(hc2)
eststo: regress FOMC_sveny10_chg L2_move_high, vce(hc2)

esttab, se r2  starlevels(* 0.10 ** 0.05 *** 0.01) b(%8.2f) sfmt(%8.3f %9.0fc)

esttab using "../tables/table3.tex", replace label nonotes se ///
	 mgroup("10y yield change in 3-day FOMC window", pattern(1 0 0 0 0) prefix(\multicolumn{@span}{c}{) suffix(}) span erepeat(\cmidrule(lr){@span})) ///
	 nomtitles ///
	 noobs scalars("r2 \$R^2\$" "N N") msign($-$) ///
	 starlevels(* 0.10 ** 0.05 *** 0.01) ///
	 b(%8.2f) sfmt(%8.3f %9.0fc) ///
	 substitute(\hline \toprule) /// 
	 varwidth(40) ///
	 order(_cons)
 